<?php
require_once('system/config/main_config.php');

$getStrPos = strpos($_SERVER['REQUEST_URI'], '?');
$strUrl = substr($_SERVER['REQUEST_URI'], 0, $getStrPos ? $getStrPos : strlen($_SERVER['REQUEST_URI']));
$arrRequest = explode('/', substr($strUrl, 1)); // Преобразовываем URL к массиву

try {
	if (!isset($arrRequest[3]) || !isset($arrRequest[4])) throw new Exception();
		
	// Получаем размеры
	$arrSizes = explode('x', $arrRequest[3]);	
	if (!isset($arrSizes[0]) || !isset($arrSizes[1]) || isset($arrSizes[2])) throw new Exception();
	
	//$arrExistSizes = array('130x130', '170x170', '200x200', '40x40');
	//if (!in_array($arrRequest[3], $arrExistSizes)) throw new Exception();
		
	$width = intval($arrSizes[0]);
	$height = intval($arrSizes[1]);
	
// 	// Если размеры неправильные, то кидаем ошибку
// 	if ($width <= 0 || $width > 2000 || $height <= 0 || $height > 2000) throw new Exception();
	
	$imageId = intval(substr($arrRequest[4], 0, strpos($arrRequest[4], '.'))); // ID фотки
	$format = substr($arrRequest[4], strpos($arrRequest[4], '.') + 1); // формат фотки
	
	$arrExistFormats = array('jpg'); // Массив разрешенных форматов	
	if (!in_array($format, $arrExistFormats)) throw new Exception();
	
	// Проверяем фотку на существование
	$objPhoto = new Photo($imageId);
	if (!$objPhoto->id) throw new Exception();
	
	// Путь к оригинальной фотке
	$orinalPath = ABSPATH . '/content/images/original/' . $objPhoto->id . '.' . $format;
	if (!is_file($orinalPath)) throw new Exception();

	// Получение размера оригинальной фотки
	list($originalWidth, $originalHeight) = getimagesize($orinalPath);
	
	$x = 0; // Смещение фотки по оси X
	$y = 0; // Смещение фотки по оси Y

	// Считаем пропорции сторон
	$scaleX = round($originalWidth / $width, 2);
	$scaleY = round($originalHeight / $height, 2);	
	
	// Пересчитываем размер и смещение
	if ($scaleX > $scaleY) {
		$oldWidth = $originalWidth;
		$originalWidth = ceil($scaleY * $width);
		$x = ceil(($oldWidth - $originalWidth) / 2);
	}
	elseif ($scaleX < $scaleY) {
		$oldHeight = $originalHeight;
		$originalHeight = ceil($scaleX * $height);
		$y = ceil(($oldHeight - $originalHeight) / 2);
	}
	
	$newImage = imagecreatetruecolor($width, $height);
	$originalImage = imagecreatefromjpeg($orinalPath);
	
	imagecopyresampled($newImage, $originalImage, 0, 0, $x, $y, $width, $height, $originalWidth, $originalHeight);
	
	// Сохраняем
	if (!is_dir(ABSPATH . '/content/images/static/' . $arrRequest[3])) mkdir(ABSPATH . '/content/images/static/' . $arrRequest[3]);
	imagejpeg($newImage, ABSPATH . '/content/images/static/' . $arrRequest[3] . '/' . $objPhoto->id . '.' . $format, 100);

	// Выводим
	header("Expires: Sun, 17-Jan-2038 19:14:07 GMT");
	header("Cache-Control: public, max-age=29030400");
	header("Pragma: cache");
	header("Last-Modified: Thu, 01 Jan 1970 00:00:01 GMT");	
	header('Content-type: image/jpeg');
	imagejpeg($newImage);
	
}
catch (Exception $e) {
	header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
	View_Error::showErrorPage('404');
}